In [12]:
a_df = pd.DataFrame([
{
"Name": "A 회사 직원 (1)",
"Age": 30,
},
{
"Name": "A 회사 직원 (2)",
"Age": 29,
}
])
b_df = pd.DataFrame([
{
"Name": "B 회사 직원 (1)",
"Age": 33,
},
{
"Name": "B 회사 직원 (2)",
"Age": 26,
}
])
In [5]:
a_df
Out[5]:
A와 B 회사가 합병해서 하나의 DF으로 만들자.
In [6]:
a_df + b_df # Matrix Sum 과 유사하게 합쳐진다. (행렬합처럼)
Out[6]:
In [8]:
together_df = pd.DataFrame(columns=["Name", "Age"])
# for문을 돌리면서 together_df.loc[len(together_Df)] ...
In [7]:
a_df.append(b_df)
Out[7]:
In [9]:
a_df
Out[9]:
In [13]:
ab_df = a_df.append(b_df) #이렇게 하면 inplace로 바꿀 수 있다.
In [15]:
ab_df.loc[0] #2개가 나와 버린다. 인덱스가 중복되었기 때문
Out[15]:
In [17]:
# 1. 번외로 index가 중복 되었을 때 해결하는 방법!
ab_df.reset_index()
Out[17]:
In [18]:
a_df["Age"] #Series => 특정 Column 하나만 가져오는 애
Out[18]:
In [19]:
a_df[["Age"]] #리스트를 받으면. DataFrame => 특정 Columns들만 가져오는 애
Out[19]:
In [24]:
ab_df.reset_index()[["Name", "Age"]] #이렇게 해도 되지만 번거롭다.
Out[24]:
In [27]:
ab_df.reset_index(drop=True)
Out[27]:
In [28]:
ab_df.reset_index(drop=True, inplace=True) #이거 명령어 추가하면 원본 데이터가 변경된다.
Out[28]:
In [31]:
pd.concat([a_df, b_df])
Out[31]:
In [32]:
ab_df = pd.concat([a_df, b_df]).reset_index(drop=True)
In [33]:
ab_df
Out[33]:
In [37]:
a_df["Company"] = "KaKao"
b_df["Company"] = "Daum"
ab_df = pd.concat([a_df, b_df])
ab_df
Out[37]:
In [38]:
# 카카오에 다녔던 친구를 뽑고 싶습니다.
# 칼럼의 값을 비교해서 True/False series를 만들고 원본 데이터프레임에서 시리즈의 값이 True인 친구만 뽑는다.(행렬곱)
In [39]:
is_kakao = ab_df["Company"] == "KaKao"
is_kakao
Out[39]:
In [42]:
ab_df[is_kakao] #지금은 Series로 들어갔다.
Out[42]:
In [43]:
a_df = a_df[["Name", "Age"]]
b_df = b_df[["Name", "Age"]]
In [45]:
b_df
Out[45]:
In [52]:
ab_df = pd.concat([a_df, b_df], keys=["KaKao", "Daum"])
In [53]:
ab_df.loc["KaKao"] # 결과가 DataFrame 으로 나왔다.
Out[53]:
In [56]:
a_df.loc[0] #결과가 Series로 나온다. 원본 데이터 형태에 따라서 결과가 다르게 나온다.
Out[56]:
In [57]:
ab_df.loc["KaKao"].loc[0]
Out[57]:
In [65]:
name_email_df = pd.DataFrame([
{
"Name": "김기표",
"Email": "kkp@gmail.com",
},
{
"Name": "유영수",
"Email": "yys@naver.com",
}
])
address_df = pd.DataFrame([
{
"Address": "패캠 대기빌딩 김기표님 앞",
},
{
"Address": "패캠 대기빌딩 유영수님 앞",
}
])
In [66]:
name_email_df
Out[66]:
In [67]:
address_df
Out[67]:
In [68]:
name_email_df + address_df
Out[68]:
In [69]:
pd.concat([name_email_df, address_df])
Out[69]:
In [70]:
pd.concat([name_email_df, address_df], axis=1) #기본값으로 0, False가 들어가 있다.
Out[70]:
In [73]:
pd.concat([name_email_df, address_df], axis=True)
Out[73]:
In [74]:
name_email_df = pd.DataFrame([
{
"Name": "김기표",
"Email": "kkp@naver.co.kr",
},
{
"Name": "김기준",
"Email": "sj@gmail.co.kr",
}
])
address_df = pd.DataFrame([
{
"Address": "패캠 대기빌딩 김기표님 앞",
},
{
"Address": "패캠 대기빌딩 김기준님 앞",
},
{
"Address": "패캠 대기빌딩 김기상님 앞",
}
])
In [75]:
pd.concat([name_email_df, address_df], axis=1)
Out[75]:
In [77]:
ab_df = a_df.append(b_df).reset_index(drop=True)
ab_df
Out[77]:
In [78]:
ab_df.iterrows()
Out[78]:
In [81]:
for index, row in ab_df.iterrows(): #가능하면 for문 말고 다른 방법을 찾아보자.
print(row) #row를 기준으로 iteration을 돈다.
# iterrows => 수작업으로 고생을 해서 구현을 하다가 => pandas내부기능으로 옮기는 작업을 할 예정이다.